The enterprise computing landscape has recently undergone a fundamental shift in storage architectures in which the central-service architecture has given way to distributed storage systems. Distributed storage systems built from commodity computer systems can deliver high performance, availability, and scalability for new data-intensive applications at a fraction of cost compared to monolithic disk arrays. To unlock the full potential of distributed storage systems, data is replicated across multiple instances of the distributed storage system at different geographical locations, thereby increasing availability and reducing network distance from clients.
In a distributed storage system, when an object (e.g., a file) is uploaded to a first instance (e.g., a first storage cluster) of the distributed storage system, the object is replicated to other instances of the distributed storage system to balance the load across the distributed storage system, to provide low-latency access to objects (e.g., objects are replicated to geographically distributed storage clusters), and/or to ensure redundancy in case of the unavailability of particular instances of the distributed storage system. After uploading the object to the first instance, a request may be received from a client to obtain the object from the distributed storage system. However, a second instance of the distributed storage system may be the instance that services the request to obtain the object from the distributed storage system. If the request for the object was received before a time when metadata for the file (e.g., the metadata includes a location of the file in the distributed storage system) was replicated to the second instance of the distributed storage system, the object may appear to not be in the distributed storage system.